This invention relates generally to the field of software for editing and delivering printer jobs and more particularly to a method and system by which a user can edit and deliver a print job in a computer system where the print job can originate from different applications and platforms.
A new class of printing software has coming into use recently. This class of printing software allows jobs to be edited outside of a printer driver. This class of software is of particular interest because it makes printing features provided by a printer visible to a user. On the Microsoft Windows platforms (xe2x80x9cWindowsxe2x80x9d), the predominant platform for home and office printing, the only user interface related to printing that most users interact with comes from the application. This user interface (i.e. print dialog box) often does not expose capabilities that differentiate the different printer products. Consequently, investment in new hardware, firmware, and software technologies for printer products goes largely unnoticed and unused by the majority of the users.
For the purposes of this application this new class of printing software is referred to as job editing and delivery systems. These systems capture a job from an application and provide the user with the opportunity to interactively modify the job settings. Users can choose options like n-up (xe2x80x9cnxe2x80x9d images on one sheet), watermarks, and booklet printingxe2x80x94among others. After the user has finished choosing the desired settings, the job is then sent to a printer of the user""s choice. Some job editing and delivery systems track the job""s status with varying degrees of success.
There are several commercial examples of job editing and delivery systems in existence today. A non-exhaustive list of these types of systems include:
(i) FinePrint by Single Track Software (www.sinciletrack.com);
(ii) printChef by MindGate (www.mindgate.com);
(iii) HandyPrint; or
(iv) Power PrintCache by LaserTools.
All of these job editing and delivery systems are implemented as a monolithic, non-reusable system. Although they are reusable in the sense that they can capture and process print jobs from most Windows applications, they are non-reusable in the sense that they cannot be used to capture and process jobs from non-Windows applications that are used by Windows end-users. For example, it would require a significant design change for any of the current products, such as those mentioned above, to support a Windows client printing from a UNIX host. Accordingly, a problem with the current systems is that a Windows end-user does not have the same rich printing experience regardless of which system the print job originates from.
These job editing and delivery systems are also non-reusable because they cannot be more tightly integrated into applications. In order to capture job information, they require the application to pass job information to the Windows or other operating systems"" printing system. Before they can offer a print preview, this information must pass through the printing system, which causes a significant delay.
Furthermore, the prior art systems are not well integrated into the applications and, therefore, can not be easily modified by the applications. That is, prior art job editing and delivery systems are not easily configurable by applications.
FIG. 1 shows the operation of a typical prior art job editing and delivery system 10 similar to the ones mentioned above. It is important to note that the figure is based entirely on a functional examination of the behavior of the existing systems and an examination of a Windows system after installing a prior art job editing and delivery system, without performing a disassembly of program instructions. In FIG. 1, the prior art system 10 captures the job using a custom printer driver 11. This printer driver 11 passes the job information to a 32-bit processing module 12, which in turn displays the job information so that a user may edit this job information. In the obvious implementation, job information (including imaging information) is passed into the prior art 32 bit processing module 12 and processed directly by the prior art system 10. This makes the prior art 32 bit processing module 12 (or any similarly implemented job editing and delivery system) impractical to reuse.
Reusing a job editing and delivery system is desirable because job information may come from many sources. For instance, job information may be supplied from an Enterprise Resource Planning (ERP) application from vendor such as SAP (which is the market leader in providing ERP applications). Although SAP jobs typically originate on a server machine, the end-user often issues the print command from client software running under Windows. Therefore, the user is unable to interact with their familiar Windows-based job editing and delivery system when they print from SAP (or other similar client/server applications).
To enable the prior art job editing and delivery system to be used when printing from SAP, it would be necessary to transmit the job from SAP to the end-user""s PC, then funnel this information into the job editing and delivery system. Funneling the job information into a job editing and delivery system would be likely to involve the following steps:
(i) converting the job data into the intermediate representation used by the job editing and delivery system and thereby severely impact performance; and/or
(ii) sending job data across process boundaries (requiring a copy), which also severely impacts performance.
Therefore, none of the known job editing and delivery systems appear to support re-use and there is no evidence that it is practical to re-use their printing software objects or modules.
Therefore, it is a general objective of the invention to alleviate the problems and shortcomings identified above.
One of the objectives of one aspect of the invention is to provide a reusable job editing and delivery system that permits a Windows user to edit and transmit a print job irrespective of the origin of the print job.
An objective of another aspect of the invention is to provide a reusable job editing and delivery system that makes use of standard component technologies so that the job editing and delivery system can be used by a different applications on different platforms.
An objective of another aspect the invention is to provide a printing software object that can be directly used by an application that originates a print job.
An objective of another aspect of the invention is to provide a printing software object that can be used by a printer driver conduit host that captures the print job data from the printing subsystem of an operating system.
An objective of another aspect of the invention is to provide a printing software object that can be used by a server conduit host that captures print job data from a server system which originates the print job.
These and other objectives are achieved by providing a computer implemented method by which a user edits and delivers a print job in a computer system, the method including the steps of: providing a printing software object as a Component Object Model (xe2x80x9cCOMxe2x80x9d) component for editing and delivering a print job; providing the job data of the print job to the printing software object, by a print job creator, in the form of references to pages; using the reference to pages, by the software printing object, to call and display the pages on a need basis; editing the job data of the print job by a user based on the displayed pages; and delivering the print job for processing in accordance with the edited job data.
Also provided is a printing software object as an in-process COM component.
Also provided is a method in which the printing software object is used directly by an application that is the print job creator.
Further provided is a computer implemented method in which the printing software object is used by a printer driver conduit host that captures print job data from the printing subsystem of the OS.
Also provided is a computer implemented method in which the software printing object is used by a server conduit host that captures print job data from a server system in which the print job data is created.
Further provided is a computer readable data storage medium having program code recorded thereon for a user editable print job editing and delivery system, the program code including: a first program code that provides a printing software object as a COM component for editing and delivering the print job; a second program code that provides job data of the print job to the printing software object, in the form of references to pages; the printing software object uses the reference to pages to call and display the pages on a need basis and edits the job data of the print job based on the user""s response to the displayed pages; and a third program code that delivers the print job for processing in accordance with the edited job data.